package xyz.tanxiao.links.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 链接映射实体
 *
 * @author 万成波
 * @email 2300064869@qq.com
 * @createTime 2023-06-10 00:56:57 星期六
 */
@Getter
@Setter
@TableName(value ="sl_link_mapping")
public class SlLinkMapping implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 短链接归属用户
     */
    private Long linkUid;

    /**
     * 链接类型：暂不定义
     */
    private Integer type;

    /**
     * 长链接映射Key
     */
    private String mappingKey;

    /**
     * 短链接服务域名
     */
    private String domainName;

    /**
     * 原始长链接URL
     */
    private String longLink;

    /**
     * 短链接映射状态：0 正常、1 禁用、2 过期、3 受限
     * {@link xyz.tanxiao.links.common.enums.MappingKeyStatusEnum}
     */
    private Integer status;

    /**
     * 短链接启用时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime enableTime;

    /**
     * 短链接禁用时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime disableTime;

    /**
     * 短链接允许访问次数
     */
    private Long allowTotal;

    /**
     * 短链接访问密码
     */
    private String accessPassword;

    /**
     * 长链接映射方式
     */
    private String mappingWay;

    /**
     * 短链接禁用时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 请求IP
     */
    private String requestIp;

    /**
     * 重定向链接
     */
    @TableField(exist = false)
    private String redirectUrl;

}